 //********************************************************************
 // PigLatinTranslator.java      Author: 20172323wyh
 //
 // Represents a translator from English to Pig Latin.Demonstrates
 // method decomposition.
 //********************************************************************
 
 import java.util.Scanner;
 
 public class PigLatinTranslator
 {
    //----------------------------------------------------------------
    // Translates a sentence of words into Pig Latin.
    //----------------------------------------------------------------
    public static String translate(String sentence)
    {
       String result = "";
       
       sentence = sentence.toLowerCase();

       Scanner scan = new Scanner(sentence);

       while (scan.hasNext())
       {
          result += translateWord(scan.next());
          result += " ";
       }

       return result;
    }

    //---------------------------------------------------------------
    // Translates one word into Pig Latin. If teh word begins with a 
    // vowel, the suffix "yay" is appended to the word. Otherwise, 
    // the first letter or two are moved to the end of the word,
    // and "ay" is appended.
    //---------------------------------------------------------------
    private static String translateWord(String word)
    {
       String result = "";
       
       if (beginWithVowel(word))
          result = word + "yay";
       else 
          if (beginWithBlend(word))
             result = word.substring(2) + word.substring(0,2) + "ay";
          else 
             result = word.substring(1) + word.charAt(0) + "ay";

       return result;
    }

    //--------------------------------------------------------------
    // Determines if the specified word begins with a vowel.
    //--------------------------------------------------------------
    private static boolean beginWithVowel(String word)
    {
       String vowels = "aeiou";
  
       char letter = word.charAt(0);

       return (vowels.indexOf(letter) != -1);
    }

    //--------------------------------------------------------------
    // Determines if the specified word begins with a particular
    // two-character consonant blend.
    //--------------------------------------------------------------
    private static boolean beginWithBlend(String word)
    {
       return ( word.startsWith("bl") || word.startsWith("sc") ||
                word.startsWith("br") || word.startsWith("sh") ||
                word.startsWith("ch") || word.startsWith("sk") ||
                word.startsWith("cl") || word.startsWith("sl") ||
                word.startsWith("cr") || word.startsWith("sn") ||
                word.startsWith("dr") || word.startsWith("sm") ||
                word.startsWith("dw") || word.startsWith("sp") ||
                word.startsWith("fl") || word.startsWith("sq") ||
                word.startsWith("fr") || word.startsWith("st") ||
                word.startsWith("gl") || word.startsWith("sw") ||
                word.startsWith("gr") || word.startsWith("th") ||
                word.startsWith("kl") || word.startsWith("tr") ||
                word.startsWith("ph") || word.startsWith("tw") ||
                word.startsWith("pl") || word.startsWith("wh") ||
                word.startsWith("pr") || word.startsWith("wr") );
     }
 }
